package com.bnz.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.Map;

/**
 * 购物车类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Cart {
    //1. 定义购物车存放的所有商品
    private Map<String,CartItem> map = new  HashMap<>();

    //2. 添加商品到购物车
    public void add(Dessert dessert) {
        //2.1 判断map中是否有此商品
        String did = dessert.getDid();
        if (map.containsKey(did)){      //有此商品就修改库存及商品数量
            //2.2 根据key得到购物项
            CartItem item = map.get(did);
            //2.3 修改购买数量
            item.setNum(item.getNum()+1);
        }else {                     //没有此商品就添加到集合中
            //2.4 构造要添加的购物项对象
            CartItem cartItem = new CartItem(dessert,1);
            //2.5 添加到商品列表集合
            map.put(did,cartItem);
        }
        //2.6 修改库存
        dessert.setQuantity(dessert.getQuantity() - 1);

    }

    //3. 从购物车中移除商品
    public void remove(String did) {
        //3.1 恢复库存
        //3.1.1 得到购物项
        CartItem cartItem = map.get(did);
        //3.1.2 得到购物项相关连的商品
        Dessert dessert = cartItem.getDessert();
        //3.1.3 修改库存
        dessert.setQuantity(dessert.getQuantity() + cartItem.getNum());
        //3.2 从购物车中清除此商品
        map.remove(did);
    }
}
